package com.wangc.study.annotation;

import java.lang.annotation.*;

/**
 * @author wangC
 * @create 2020-05-25 下午10:34
 * @Description 自定义注解
 **/

@MyAnnotation(name = "wang",age=1,likes = {"play"})
public class TestAnnotation {

    @MyAnnotation
    public void test() {

    }
}


//target 用来声明当前自定义注解适合用于什么地方，类、包、方法、变量   --必加
@Target({ElementType.METHOD, ElementType.TYPE})
//retention 用来表示当前注解是用于什么环境  源码、类级别、运行时环境  一般都是运行时环境     --必加
@Retention(RetentionPolicy.RUNTIME)
//表示该注解是否会显示在Java doc 中
@Documented
// 表示当前注解是否能被继承
@Inherited
@interface MyAnnotation {

    //定义的方式看起来像是方法，但是实际上是用在使用注解的时候填写的参数的名称，默认的名称是value，只有value一个的时候可以省略value=
    //自定义注解中填写的所有方法都需要在使用注解的时候添加值，所以一般会给默认值
    String name() default "aa";

    int age() default 11;

    String[] likes() default {"asd"};

}
